package com.anita.member.domain.repository;


import com.anita.member.domain.service.JwtService;

/**
 * 刷新令牌仓储接口
 * 定义刷新令牌的持久化操作
 */
public interface RefreshTokenRepository {

    /**
     * 存储refreshToken
     * @param userType 用户类型
     * @param userId 用户ID
     * @param refreshToken 刷新令牌
     */
    void storeRefreshToken(JwtService.UserType userType, Long userId, String refreshToken);

    /**
     * 验证refreshToken是否有效
     * @param userType 用户类型
     * @param userId 用户ID
     * @param refreshToken 刷新令牌
     * @return 是否有效
     */
    boolean validateRefreshToken(JwtService.UserType userType, Long userId, String refreshToken);

    /**
     * 删除refreshToken
     * @param userType 用户类型
     * @param userId 用户ID
     */
    void deleteRefreshToken(JwtService.UserType userType, Long userId);

    /**
     * 从存储中获取refreshToken
     * @param userType 用户类型
     * @param userId 用户ID
     * @return 存储的refreshToken
     */
    String getRefreshToken(JwtService.UserType userType, Long userId);
}